#ifndef CITY_DEFS_H
#define CITY_DEFS_H


enum queueCodes{NOGO, GO, CITY, DRAWER, BUS_C, STOPS=6, TRAFFIC_LIGHT, PASSENGER, LINE, BUS_L, CITY_STOP, BUS_MOVE, BUS_CREATE};
enum location_type{FORBIDDEN=16, EMPTY=0, STOP=1, TRAFFIC_LIGHT_HOR=2, TRAFFIC_LIGHT_VER=4, BUS=8};
enum orientation{NORTH, SOUTH, EAST, WEST};
enum movement{LEFT, CENTER, RIGHT};
#define BUS_REQUEST_SIZE 10
#define BUS_ANS_SIZE 1
#define BLOCKHEIGHT 2
#define BLOCKWIDTH 2
#define STREETWIDTH 1
#define TRAFFIC_L_SWITCH 6
#define MAX_PAS 20
#define MAX_STOPS 10

#define CITY_ID 1
#define SEM_ID 2

#include <sys/types.h>

typedef struct{
	char x;
	char y;
}coords;

//informacion almacenada en la matriz del mapa
typedef struct {
	char tipo;
	char linea;
	char bondi;
	char way;
	char lightSense;
	char numParAbs;
	char pasAbord;
}T_DataMap;

//informacion de los pasajeros
typedef struct{
	char type;
	unsigned char paradaOr;
	unsigned char paradaDest;
	unsigned char linea;
	unsigned char bondi;
	char status;		//si esta esperando el bondi, viajando, o ya llego al destino
	unsigned char numeroPas;
}passData_T;

//informacion de las paradas
typedef struct{
	char type;
	coords pos;
	char linea;
	char paradaNInterno;
	char paradaNAbs;
	int cant_pas;
	passData_T passengers[MAX_PAS];
}stops_t;

//informacion del pedido del bus a la ciudad
typedef struct{
	char type;
	char busN;
	char busLine;
	coords curPos;
	char move;
	char orientation;
	char pasajeros;
}busReqT;

//informacion de los semaforos
typedef struct {
	int intervalo;
	char status;
	coords pos;
}semafT;
#endif
